/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  dev
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// List of actions. Each action is a dictionary with e.g.
//     // name of set
//     name    c0;
//
//     // type: pointSet/faceSet/cellSet/faceZoneSet/cellZoneSet
//     type    cellSet;
//
//     // action to perform on set. Two types:
//     // - require no source : clear/invert
//     // - require source    : new/add/delete/subset
//     action  new;
//
// The source entry varies according to the type of set:
//
// cellSet
// ~~~~~~~
//
//    // Select by explicitly providing cell labels
//    source labelToCell;
//    {
//        value (12 13 56);   // labels of cells
//    }
//
//    // Copy elements from cellSet
//    source cellToCell;
//    {
//        set c1;
//    }
//
//    // Cells in cell zone
//    source zoneToCell;
//    {
//        name ".*Zone";      // Name of cellZone, regular expressions allowed
//    }
//
//    // Cells on master or slave side of faceZone
//    source faceZoneToCell;
//    {
//        name ".*Zone";      // Name of faceZone, regular expressions allowed
//        option master;      // master/slave
//    }
//
//    // Select based on faceSet
//    source faceToCell;
//    {
//        set f0;             // Name of faceSet
//
//        // option neighbour; // cell with neighbour in faceSet
//        // option owner;     //  ,,       owner
//        option any;         // cell with any face in faceSet
//        // option all;       // cell with all faces in faceSet
//    }
//
//    // Select based on pointSet
//    source pointToCell;
//    {
//        set p0;
//        option any;         // cell with any point in pointSet
//        // option all;       // cell with all points in pointSet
//    }
//
//    // Select based on cellShape
//    source shapeToCell;
//    {
//        type hex;           // hex/wedge/prism/pyr/tet/tetWedge/splitHex
//    }
//
//    // Cells with cell centre within box
//    source boxToCell;
//    {
//       box   (0 0 0) (1 1 1);
//    }
//
//    // Cells with cell centre within box
//    // Is skewed, rotated box. Given as origin and three spanning vectors.
//    source rotatedBoxToCell;
//    {
//       origin   (0.2 0.2 -10);
//       i        (0.2 0.2 0);
//       j        (-0.2 0.2 0);
//       k        (10 10 10);
//    }
//
//    // Cells with centre within cylinder
//    source cylinderToCell;
//    {
//       p1       (0.2 0.2 -10); // start point on cylinder axis
//       p2       (0.2 0.2 0);   // end point on cylinder axis
//       radius   5.0;
//    }
//
//    // Cells with centre within sphere
//    source sphereToCell;
//    {
//       centre   (0.2 0.2 -10);
//       radius   5.0;
//    }
//
//    // Cells with cellCentre nearest to coordinates
//    source nearestToCell;
//    {
//       points ((0 0 0) (1 1 1)(2 2 2));
//    }
//
//    // Select based on surface
//    source surfaceToCell;
//    {
//        file            "www.avl.com-geometry.stl";
//        outsidePoints   ((-99 -99 -59));    // definition of outside
//        includeCut      false;              // cells cut by surface
//        includeInside   false;              // cells not on outside of surf
//        includeOutside  false;              // cells on outside of surf
//        nearDistance    -1;                 // cells with centre near surf
//                                            // (set to -1 if not used)
//        curvature       0.9;                // cells within nearDistance
//                                            // and near surf curvature
//                                            // (set to -100 if not used)
//    }
//
//    // values of field within certain range
//    source fieldToCell;
//    {
//        field   U;      // Note: uses mag(U) since volVectorField
//        min         0.1;
//        max         0.5;
//    }
//
//    // Mesh region (non-face connected part of (subset of)mesh)
//    source regionToCell;
//    {
//        set         c0;         // name of cellSet giving mesh subset
//        insidePoint (1 2 3);    // point inside region to select
//    }
//
//
//
// faceSet
// ~~~~~~~
//
//    // Copy elements from faceSet
//    source faceToFace;
//    {
//        set f1;
//    }
//
//    // Select based on cellSet
//    source cellToFace;
//    {
//        set c0;
//        option all;         // All faces of cells
//        // option both;      // Only faces whose owner&neighbour are in cellSet
//    }
//
//    // Select based on pointSet
//    source pointToFace;
//    {
//        set p0;
//        option any;         // Faces using any point in pointSet
//        // option all        // Faces with all points in pointSet
//    }
//
//    //  Select by explicitly providing face labels
//    source labelToFace;
//    {
//        value (12 13 56);   // labels of faces
//    }
//
//    // All faces of patch
//    source patchToFace;
//    {
//        name ".*Wall";      // Name of patch, regular expressions allowed
//    }
//
//    // All faces of faceZone
//    source zoneToFace;
//    {
//        name ".*Zone1";     // Name of faceZone, regular expressions allowed
//    }
//
//    // Faces with face centre within box
//    source boxToFace;
//    {
//        box  (0 0 0) (1 1 1);
//    }
//
//    // Faces with normal to within certain angle aligned with vector.
//    source normalToFace;
//    {
//        normal (0 0 1);     // Vector
//        cos     0.01;       // Tolerance (max cos of angle)
//    }
//
//
//
// pointSet
// ~~~~~~~
//
//    // Copy elements from pointSet
//    source pointToPoint;
//    {
//        set p1;
//    }
//
//    // Select based on cellSet
//    source cellToPoint;
//    {
//        set c0;
//        option all;         // all points of cell
//    }
//
//    // Select based on faceSet
//    source faceToPoint;
//    {
//        set f0;             // name of faceSet
//        option all;         // all points of face
//    }
//
//    // Select by explicitly providing point labels
//    source labelToPoint;
//    {
//        value (12 13 56);   // labels of points
//    }
//
//    // All points in pointzone
//    source zoneToPoint;
//    {
//        name ".*Zone";      // name of pointZone, regular expressions allowed
//    }
//
//    // Points nearest to coordinates
//    source nearestToPoint;
//    {
//       points ((0 0 0) (1 1 1));
//    }
//
//    // Points with coordinate within box
//    source boxToPoint;
//    {
//       box   (0 0 0) (1 1 1);
//    }
//
//    // Select based on surface
//    source surfaceToPoint;
//    {
//        file            "www.avl.com-geometry.stl";
//        nearDistance    0.1;    // points near to surface
//        includeInside   false;  // points on inside of surface
//                                // (requires closed surface with consistent
//                                //  normals)
//        includeOutside  false;  //   ,,    outside  ,,
//    }
//
//
//
//
// cellZoneSet
// ~~~~~~~~~~~
// (mirrors operations on a cellSet into a cellZone)
//
//    // Select based on cellSet
//    source setToCellZone;
//    {
//        set c0;           // name of cellSet
//    }
//
//
//
// faceZoneSet
// ~~~~~~~~~~~
//    // Select based on faceSet without orientation
//    source setToFaceZone;
//    {
//        set f0;           // name of faceSet
//    }
//
//    // Select based on faceSet, using cellSet to determine orientation
//    source setsToFaceZone;
//    {
//        faceSet f0;       // name of faceSet
//        cellSet c0;       // name of cellSet of slave side
//    }

actions
(
    {
        name    background;
        type    cellSet;
        action  new;
        source surfaceToCell;
        sourceInfo
        {
            file            "constant/triSurface/flange.obj";
            outsidePoints   ((-0.026 -0.0275 -0.0235));
            includeCut      true;
            includeInside   true;
            includeOutside  false;
            nearDistance    -1;
            curvature       -100;
        }
    }
);

// ************************************************************************* //
